package org.rednebula.framework.core.model.domain;

import org.rednebula.framework.core.IEnvironment;
import org.rednebula.framework.core.model.State;

public interface IModel{
	
	IModel getParent();  //得到当前model的主引用model.
	
	Object getIdent(); // 得到当前model对应模型的主键.

	void load(IEnvironment env); //加载当前model的相关数据,包含加载 附属model的数据.

	void create(IEnvironment env); //保存首次创建model的相关数据,包含附属model.主要使用于顶层model.

	void modify(IEnvironment env); //保存当前model的相关数据,包含附属model.

	void delete(IEnvironment env);//删除当前model的相关数据,包含附属model.
	
	void other(IEnvironment env);//其他情况处理

	State getState();    //获得当前model的状态.
	 
	State getChildrensState(Class cls); //获得在当前model中指定类型的子model集的状态.
	
	boolean isOpen(); //获取监听状态.

	void changeState(State state);  //改变当前model的状态.
	
	void changeChildrenState(Class cls,State state); //改变在当前model中指定类型的子model集的状态.
	
	void clearChildrenState(); //清空在当前model中所有子model集的状态 .
}
